import { post } from '@/services/http'
import {message} from 'ant-design-vue'

const { export_json_to_excel } = require('../excel/Export2Excel');

export default function commonExcelExport(pageName,params) {

    let dataExcel = [];
    let fileHeader =  [] ;
    let filterVal = [] ;
    let urlPost = '' ;
    let excelName = '' ;
    if(pageName == 'resourcesManager' ){ //不可移动文物
        fileHeader = ['序号','文物编号','文物名称','县市区','乡镇街道','文保类别','文保子类','古系列类别','文保级别','时代','开放时间',
            '风险划分','巡护周期','检查要点','是否开启详情','维护人员',
        '是否安全','是否核销','划定保护双线','巡查级别','批次','是否申报点','基本简介','留档地址','原经度','原纬度','地址','经度','纬度'];
        filterVal = ['xh','b0103','b0102','b0107','b0108','b0117Name','b0118Name','b0104Name','b0105Name','b0106Name','b0121',
            'fxhf','xhzq','b0131','b0132Name','maintPerson',
        'b0114Name','b0113Name','b0115Name','b0129','b0130','b0133Name','b0116','b0125','b0126','b0127','b0109','b0111','b0112'];
        urlPost = '/excel/unmovableCultural' ;
        excelName = '不可移动文物清单';
    }else if (pageName == 'devPlanManager' ) {//开发计划管理
        fileHeader = ['序号','区划','项目名称','责任单位','责任人','项目投资','完工时间','项目地址','占地面积','点位名称','当前节点','标题','简介'];
        filterVal = ['xh','orgName','j0102','j0103','j0104','j0105','j0106','j0107','j0109','b0102','j0202','j0302','j0303'];
        urlPost = '/excel/developmentPlan' ;
        excelName = '开发计划管理清单';
    }else if (pageName == 'labelManager' ) {//标签管理导出
        fileHeader = ['点位ID','点位名称','标签'];
        filterVal = ['b0101','b0102','b0136'];
        urlPost = '/excel/labelManagerExcelport' ;
        excelName = '点位标签清单';
    }else if (pageName == 'GuShuGuMu' ) {
        fileHeader=[' 序号 ',' 县市区 ',' 点位名称 ',' 社区 ',' 详细地址 ',' 经度 ',' 纬度 ',' 生长态势 ',' 种名 ',' 科名 ',' 属名 ',' 保护级别 ',' 功能区 ',' 功能区编码 ',' 是否在建成区内 ',' 保护批次号 ',' 挂牌号 ',' 牌号 ',' 建档时间 ',' 树龄 (年)',' 树龄类型 ',' 树高 (m)',' 胸径 (cm)',' 胸围 (cm)',' 平均冠幅 (m)',' 东西冠幅 (m)',' 南北冠幅 (m)',' 生长环境 ',' 树木描述 ',' 保护性措施 ',' 保护建议 ',' 管理级别 ',' 权属性质 ',' 管理机构 ',' 管养类型 ',' 管养资金来源 ',' 死亡时间 ',' 死亡原因 ',' 处理情况 ',' 备注 '];
        filterVal = ['xh','b0107','b0102','b1204','b1205','b0111','b0112','b1211','b1212','b1213','b1214','b1217','b1202','b1203','b1206','b1207','b1208','b1209','b1210','b1215','b1216','b1218','b1219','b1220','b1221','b1222','b1223','b1224','b1224','b1225','b1227','b1228','b1229','b1230','b1231','b1232','b1233','b1234','b1235','b1236'];
        urlPost = '/excel/guShuGuMuExcelport' ;
        excelName = '名树古木清单';
    }else if (pageName == 'streetBuildManager'){
        fileHeader=[' 序号 ',' 县市区 ',' 古系列类别 ',' 文保级别 ',' 点位名称 ',' 地址 ',' 建筑面积 (平方米)',' 建筑年代 ',' 公布时间 ',' 标志牌设置情况 ',' 测绘建档情况 ',' 保护范围面积 (公顷)',' 核心保护范围面积 (公顷)',' 建设控制地带面积 (公顷)',' 文物保护单位数量 ',' 历史建筑数量 ',' 是否编制保护规划 ',' 编制规划时间 ',' 修改时间 '];
        filterVal = ['xh','b0107','b0104Name','b0105Name','b0102','b0109','b1112','b0106','b1105','b1106Name','b1113Name','b1102','b1103','b1104','b1107','b1108','b1109Name','b1110','updateTime'];
        urlPost = '/excel/lswfExcelport' ;
        excelName = '历史文化遗产清单';

    } else if (pageName == 'DevelopProject'){
        fileHeader=[' 序号 ',' 区划 ',' 工程名称 ',' 责任单位 ',' 责任人 ',' 项目状态 ',' 项目投资 ',' 完工时间 ',' 项目地址 ',' 占地面积 ',' 建筑面积 ',' 年代 ',' 项目进度 ','标题','简介'];
        filterVal = ['xh','h0503','h0504','h0506','h0507','h0508Name','h0510','h0511','h0512','h0513','h0514','b0106Name','h1706Name','h0515','h0516'];
        urlPost = '/excel/developProjectExcelport' ;
        excelName = '开发工程清单';
    }
    else{
        return ;
    }
    message.info('正在导出...')
    require.ensure([],() =>  {
        /**初始化分页参数 不分页获取list*/
        params.pageNum = ''
        params.pageSize = ''
        post(urlPost , params).then((res) => {
            const data = res.result
            if(data.length == 0){
                dataExcel = []
            }else{
                dataExcel = data
            }
        }).catch(() => {
            console.log(error)
        }).finally(()=>{
            const list = dataExcel;
            const data = formatJson(filterVal,list);
            export_json_to_excel(fileHeader,data,excelName);
        });

    })
}

function formatJson(filterVal,jsonData){
    return jsonData.map(v => filterVal.map(j => v[j]))
}